package paq_calculo;

import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import paq_entidades.entiv_variables;

public class fun_calculo {

    public Calendar ahoraCal = Calendar.getInstance();
    Integer num;
    Integer mes = null;
    String dia = "";
    String palabrames = "";
    entiv_variables v = new entiv_variables();
    Date hoy = new Date();

    public String formato_fecha_hora(Date fecha) {
        SimpleDateFormat ft = new SimpleDateFormat("HH:mm");
        return ft.format(fecha);
    }

    public String formato_fecha(Date fecha) {
        SimpleDateFormat ft = new SimpleDateFormat("yyyy-mm-dd");
        return ft.format(fecha);
    }
 public String formato_fecha2(Date fecha) {
        SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
        return ft.format(fecha);
    }
    public String formato_fecha_hora2(Date fecha) {
        SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return ft.format(fecha);
    }

    public int getDayOfTheWeek(Date d) {
        GregorianCalendar cal = new GregorianCalendar();
        cal.setTime(d);
        return (cal.get(Calendar.DAY_OF_WEEK) - 1);
    }

    public String mes() {
        // ahoraCal.set(hoy);

//        mes = ahoraCal.get(Calendar.MONTH);
        if (ahoraCal.get(Calendar.MONTH) == Calendar.JANUARY) {
            palabrames = "Enero";
        } else if (ahoraCal.get(Calendar.MONTH) == Calendar.FEBRUARY) {
            palabrames = "Febrero";
        } else if (ahoraCal.get(Calendar.MONTH) == Calendar.MARCH) {
            palabrames = "Marzo";
        } else if (ahoraCal.get(Calendar.MONTH) == Calendar.APRIL) {
            palabrames = "Abril";
        } else if (ahoraCal.get(Calendar.MONTH) == Calendar.MAY) {
            palabrames = "Mayo";
        } else if (ahoraCal.get(Calendar.MONTH) == Calendar.JUNE) {
            palabrames = "Junio";
        } else if (ahoraCal.get(Calendar.MONTH) == Calendar.JULY) {
            palabrames = "Julio";
        } else if (ahoraCal.get(Calendar.MONTH) == Calendar.AUGUST) {
            palabrames = "Agosto";
        } else if (ahoraCal.get(Calendar.MONTH) == Calendar.SEPTEMBER) {
            palabrames = "Septiembre";
        } else if (ahoraCal.get(Calendar.MONTH) == Calendar.OCTOBER) {
            palabrames = "Octubre";
        } else if (ahoraCal.get(Calendar.MONTH) == Calendar.NOVEMBER) {
            palabrames = "Noviembre";
        } else if (ahoraCal.get(Calendar.MONTH) == Calendar.DECEMBER) {
            palabrames = "Diciembre";
        } else {
            palabrames = "sin mes";
        }
        return palabrames;
    }

    public String getDayOfTheWeek2() {
//        GregorianCalendar cal = new GregorianCalendar();
        ahoraCal.setTime(hoy);
        num = (ahoraCal.get(Calendar.DAY_OF_WEEK));
        if (num == 1) {
            dia = "Domingo";

        } else if (num == 2) {
            dia = "Lunes";
        } else if (num == 3) {
            dia = "Martes";
        } else if (num == 4) {
            dia = "Miercoles";
        } else if (num == 5) {
            dia = "Jueves";
        } else if (num == 6) {
            dia = "Viernes";
        } else if (num == 7) {
            dia = "Sabado";
        } else {
            dia = "sin dia";
        }

        return dia;
    }

    public static Date unixTimestampToDate(String fecha) {
        Date resultado = null;
        Date aux = stringToDate("1970-01-01 00:00:00");
        Timestamp aux1 = dateToTimeStamp(aux);
        long val = (Long) Long.valueOf(fecha);
        val = val * 1000;
        val = val + aux1.getTime();
        Timestamp aux2 = new Timestamp(val);
        resultado = timestampToDate(aux2);
        return resultado;
    }

    public String dateToUnixTimestamp() {
        String res = "";
        Date aux = stringToDate("1970-01-01 00:00:00");
        Timestamp aux1 = dateToTimeStamp(aux);
        Timestamp aux2 = dateToTimeStamp(hoy);
        long diferenciaMils = aux2.getTime() - aux1.getTime();
        long segundos = diferenciaMils / 1000;
        return res + segundos;
    }

    public static String dateToString(Date fecha) {
        String result = null;
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        result = format.format(fecha);
        return result;
    }

    public static Date stringToDate(String fecha) {
        // Solo funciona con string en el formato yyyy-MM-dd HH:mm:ss
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date res = null;
        try {
            res = format.parse(fecha);
        } catch (Exception e) {
        }
        return res;
    }
//    public String dia(Date fech)
//    {
//        v.dia = fu.getDayOfTheWeek(fech);
//                txtdia = di.toString();
//                return t
//    }

    public static Timestamp dateToTimeStamp(Date fecha) {
        return new Timestamp(fecha.getTime());
    }

    public static Date fechaHoraSistema() {
        return new Date(System.currentTimeMillis());
    }

    private static Date timestampToDate(Timestamp timestamp) {
        return new Date(timestamp.getTime());
    }
}
